#include <stdio.h>

// //打印沙漏
// //2017年4月11日
// void list(int a[],int l);				//创建一个总数数组
// void print1(int b);						//打印空格
// void print2(int c,char cl);				//打印用户字符

// int main(int argc, char const *argv[])
// {
// 	int ipt=0,last=0,x=0;   			
// 	char cl=0;
// 	scanf("%d %c",&ipt,&cl);
// 	int a[50];
// 	list(a,sizeof(a)/sizeof(int));

// 	int i=0,tmp=0;				     		
// 	for ( i = 1; ipt>=a[i]; ++i)
// 	{
// 		x=a[i];
// 	}

// 	tmp=i-1;last=ipt-x;
// 	for ( i = 1; i < tmp+1; i++)
// 	{
// 		a[i]=2*i-1;
// 	}
// 	a[0]='a';a[i]='b';

// 	for ( i = 0; a[tmp]!='a' ; ++i)
// 	{
// 		print1(i);
// 		print2(a[tmp],cl);
// 		printf("\n");
// 		tmp=tmp-1;
// 	}

// 	tmp=2;
// 	for ( i = i-2; a[tmp]!='b' ; i--)
// 	{
// 		print1(i);
// 		print2(a[tmp],cl);
// 		printf("\n");
// 		tmp=tmp+1;
// 	}
// 	printf("%d\n", last);
// 	return 0;
// }
// void list(int a[],int l)
// {
// 	int i = 0;
// 	a[1]=1;
// 	for ( i = 2; i < l; i++)
// 	{
// 		a[i]=a[i-1]+2*(2*i-1);
// 	}
// }
// void print1(int b)
// {
// 	while(b>0)
// 	{
// 		printf(" ");
// 		b--;
// 	}
// }
// void print2(int c,char cl)
// {
// 	while(c>0)
// 	{
// 		printf("%c",cl);
// 		c--;
// 	}
// }

//数组元素循环右移
//传入操作数组和移动的位数 
void moveRight(int Arr[], int M,int number)
{
    //保存下数组的最后一个数 
    int endNum = Arr[number-1];
    //将0~N-2位数向后移动一位
    int i;
    for(i=number-1; i>0; i--){
        Arr[i] = Arr[i-1];
    }
    //将最后一位数放在第一位
    Arr[0] = endNum;
    M--;
    if (M>0)
    {
    	moveRight(Arr,M,number);
    }
}
int main(int argc, char const *argv[])
{
	int number=0,x=0;
	int i = 0;	
	scanf("%d %d",&number,&x);
	int a[number];

	for ( i = 0; i < number; i++)
	{
		scanf("%d",&a[i]);
	}
	moveRight(a,x,number);
	for ( i = 0; i < number; ++i)
	{
		printf("%d",a[i]);
		if (i<number-1)
		{
			printf(" ");
		}
	}	
	return 0;
}

